<script>
    

    /*
        一、用例收集

                HisDatabase：

                    1、统计每个人的申请项目数量，从高到低排序

                                select Name,count(Name) 数量  from  [dbo].[pacs_view_exam_apply_item]
                                group by  Name
                                order by  数量 Desc

                    2、查找拥有"任意数量"申请项目的患者

                                select Name,count(Name) 数量  from  [dbo].[pacs_view_exam_apply_item]
                                group by  Name
                                having COUNT(Name)=1
                                order by  数量 Desc

                    3、统计某个患者的申请项目中的 DeviceType  

                                select distinct Name, DeviceType from  [dbo].[pacs_view_exam_apply_item] where Name='朱尚贵'

                    4、查询某患者申请项目

                                select ExamItemNumber,Name,ApplyNumber,PatientId,ApplyTime,ExamItemCode,ExamItemName from [dbo].[pacs_view_exam_apply_item] where Name='张汉军'
    */

    /*
        二、用于清空预约数据的说起来


                    delete from ExamApplications
                    go
                    delete from Appointments
                    go
                    delete from Pools

                    select COUNT(*) from Appointments

                    select COUNT(*) from Pools
    */

    /*
        三、测试用例

                    ★、访问方式：

                                https://localhost:44385/api/auto-appoint/appoint?applyNumbers=202500787&needPage=false

                    1、同一个患者、一个申请单、一个检查项目

                                ExamItemNumber   Name       ApplyNumber   PatinetId        ApplyTime                  ExamItemCode      ExamItemName      
                                zy-40143605      张汉军      202500787     2848850         2025-06-10 08:17:50.000     210102015        数字化摄影（DR）

                                    

                                ★、发现一个申请单号 202500787 对应多个申请项目，发现需要进行 InstitutionsCode （医疗机构）的过滤。  （OK）

                                            在配置文件中设置 InstitutionCode 字段，如不设置，或置为空，则不过滤，否则进行过滤。

                    
                    2、同一个患者、同一个申请单、多个检查项目（同一设备类型）

                                https://localhost:44385/api/auto-appoint/appoint?applyNumbers=202500790,202500790&needPage=false

                                ExamItemNumber   Name       ApplyNumber   PatinetId        ApplyTime                  ExamItemCode      ExamItemName  
                                zy-40144931	  周付琴	  202500790	      2848858	2025-06-10 09:07:14.0000000	     210102015	        数字化摄影（DR）
                                zy-40144930	  周付琴	  202500790	      2848858	2025-06-10 09:07:14.0000000	    210102015	        数字化摄影（DR）

                                ★、发现在线服务的重复编译，通过静态字典实现了缓存机制，实现了在线服务的缓存和md5比对更新。（OK）、

                                ★、通过多次相同的请求，发现每次创建号池的数量一致，并与号池计划数量一致，且号池计划对应的号池已存在情况下不会被重复创建。（OK）

                                ★、已经自动预约过的申请单，再次进行自动预约时仍然可以自动预约，且以前的预约中对应的申请项目没有被取消。（OK）

                                            (已经在预约前进行过滤掉已经被预约的申请项目，并且如果都被预约过了，会返回相应提示信息)

                    3、同一个患者、多个申请单（相同设备类型）

                                --同一个患者，多个申请单，相同设备类型--
                                        SELECT 
                                            ExamItemNumber,
                                            Name,
                                            PatientId,
                                            DeviceType,
                                            DeviceTypeCode,
                                            ApplyNumber,
                                            ApplyTime,
                                            ExamItemCode,
                                            ExamItemName    
                                        FROM pacs_view_exam_apply_item
                                        WHERE PatientId IN (
                                            SELECT PatientId
                                            FROM pacs_view_exam_apply_item
                                            GROUP BY PatientId
                                            HAVING COUNT(DISTINCT ApplyNumber) > 1
                                        )
                                        and 
                                        InstitutionCode ='610722436002904'
                                        ORDER BY PatientId;

                                https://localhost:44385/api/auto-appoint/appoint?applyNumbers=2025018806,2025018806&needPage=false

                                  ExamItemNumber   Name     PatinetId    DeviceType   DeviceTypeCode   ApplyNumber   ApplyTime                 ExamItemCode      ExamItemName
                                  mz-39766784	  熊振英	8546535	        DR	        02	            2025018806	2025-04-01 11:19:25.000	   210102015	    数字化摄影（DR）
                                  mz-39767207	  熊振英	8546535	        DR	        02	            2025018823	2025-04-01 11:33:44.000	   210102015	    数字化摄影（DR）

                                https://localhost:44385/api/auto-appoint/appoint?applyNumbers=2025027651,2025027676&needPage=false

                                 ExamItemNumber   Name      PatinetId  DeviceType   DeviceTypeCode     ApplyNumber         ApplyTime          ExamItemCode      ExamItemName
                                 mz-40070806	任保寿	     8600738	DR	            02	            2025027676	2025-05-13 11:03:34.000	    210102015	    数字化摄影（DR） 
                                 mz-40070820	任保寿	     8600738	DR	            02	            2025027676	2025-05-13 11:03:34.000	    210102015	    数字化摄影（DR）
                                 mz-40070787	任保寿	     8600738	彩超	         04	            2025027676	2025-05-13 11:03:34.000	    220301001	    彩色多普勒超声常规检查
                                 mz-40070092	任保寿	     8600738	DR	            02	            2025027651	2025-05-13 10:36:00.000	    210102015	    数字化摄影（DR）
                                
                    4、同一个患者、单个申请单中包含不同设备类型的多个检查项目

                                 --同一个患者，一个申请单，不同设备类型下多个申请项目--
                                            SELECT 
                                                ExamItemNumber,
                                                Name,
                                                PatientId,
                                                DeviceType,
                                                DeviceTypeCode,
                                                ApplyNumber,
                                                ApplyTime,
                                                ExamItemCode,
                                                ExamItemName
                                            FROM pacs_view_exam_apply_item
                                            WHERE PatientId IN (
                                                SELECT PatientId
                                                FROM pacs_view_exam_apply_item
                                                GROUP BY PatientId
                                                HAVING COUNT(DISTINCT DeviceTypeCode) > 1
                                            )
                                            and 
                                            InstitutionCode ='610722436002904'
                                            ORDER BY PatientId;


                                 https://localhost:44385/api/auto-appoint/appoint?applyNumbers=202500133&needPage=false

                                 ExamItemNumber   Name    PatinetId   DeviceType   DeviceTypeCode   ApplyNumber   ApplyTime                ExamItemCode   ExamItemName
                                 zy-38684233	吕宝成	  2824988	    DR	        02	            202500133	2025-01-21 11:33:05.000	   210102015	    数字化摄影（DR）
                                 zy-38684260	吕宝成	  2824988	    彩超	    04	            202500133	2025-01-21 11:33:05.000	    220302003	    颈部血管彩色多普勒超声
                                 zy-38683532	吕宝成	  2824988	    DR	        02	            202500133	2025-01-21 11:19:37.000	    210102015	    数字化摄影（DR）
                                 zy-38684245	吕宝成	  2824988	    彩超	    04	            202500133	2025-01-21 11:33:05.000	    220301001	    彩色多普勒超声常规检查

                                 ★、发现第一个预约开始时间竟然早于当前时间，应该是根据配置的最晚提前预约时间计算的，不可能预约到已经开始的号池里。(OK)

                                            (原因是计算时应该是号池开始时间往前推，应该是 AddMinute(-232),写成正的了。
                                            
                                 ★、当出现多个预约计划，且都没有时间段要求的时候，或者时间段要求重合的时候，
                                            无法确定先预约哪一个？这就可能导致没法在最短时间内让患者完成所有检查。

                                

                    5、多个申请单、不同患者

                                  https://localhost:44385/api/auto-appoint/appoint?applyNumbers=202500140,202500129&needPage=false

                                    ExamItemNumber   Name      PatinetId    DeviceType   DeviceTypeCode   ApplyNumber   ApplyTime                ExamItemCode      ExamItemName
                                    zy-38674055	    田怀元	    2824727	        DR	        02	          202500129	    2025-01-20 13:42:32.000	    210102015	    数字化摄影（DR）
                                    zy-38674067	    田怀元	    2824727	        彩超	    04	          202500129	    2025-01-20 13:42:32.000	    220301001	    彩色多普勒超声常规检查
                                    zy-38703092	    高健	    2824775	        DR	        02	          202500140	    2025-01-23 09:49:59.000	    210102015	    数字化摄影（DR）
                                    zy-38703091	    高健	    2824775	        彩超	    04	          202500140	    2025-01-23 09:49:59.000	    220301001	    彩色多普勒超声常规检查
    */
</script>